package 二叉树;

public class JZ27二叉树的镜像 {

    /**
     * 请完成一个函数，输入一个二叉树，该函数输出它的镜像。
     * 例如输入：
     *      4
     *    /   \
     *   2     7
     *  / \   / \
     * 1   3 6   9
     * 镜像输出：
     *
     *      4
     *    /   \
     *   7     2
     *  / \   / \
     * 9   6 3   1
     *
     * 示例 1：
     * 输入：root = [4,2,7,1,3,6,9]
     * 输出：[4,7,2,9,6,3,1]
     *  
     * 限制：
     * 0 <= 节点个数 <= 1000
     */

    public TreeNode mirrorTree(TreeNode root) {
        if(root==null){
            return null;
        }
        TreeNode temp=root.right;
        root.right=mirrorTree(root.left);
        root.left=mirrorTree(temp);
        return root;
    }

    public static void main(String[] args) {
        JZ27二叉树的镜像 jz=new JZ27二叉树的镜像();
        TreeNode treeNode = TreeNode.getNodeByArr(new Integer[]{4, 2, 7, 1, 3, 6, 9});
        treeNode.printNode();
        TreeNode result = jz.mirrorTree(treeNode);
        result.printNode();
    }

}
